[POWERPC][XEN] Clear the RMA flag on freed pages.
authorHollis Blanchard <hollisb@us.ibm.com>
Wed, 21 Mar 2007 22:02:59 +0000 (17:02 -0500)
committerHollis Blanchard <hollisb@us.ibm.com>
Wed, 21 Mar 2007 22:02:59 +0000 (17:02 -0500)
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
xen/arch/powerpc/mm.c

index 1f1d151925159acffa20c8036cd0039d91e3645b..f36976a14322cbc8e0f21106a594a48409997be2 100644 (file)
@@ -401,9 +401,13 @@ int allocate_rma(struct domain *d, unsigned int order)
 
 void free_rma_check(struct page_info *page)
 {
-    if (test_bit(_PGC_page_RMA, &page->count_info) &&
-        !test_bit(_DOMF_dying, &page_get_owner(page)->domain_flags))
-        panic("Attempt to free an RMA page: 0x%lx\n", page_to_mfn(page));
+    if (test_bit(_PGC_page_RMA, &page->count_info)) {
+        if (!test_bit(_DOMF_dying, &page_get_owner(page)->domain_flags)) {
+            panic("Attempt to free an RMA page: 0x%lx\n", page_to_mfn(page));
+        } else {
+            clear_bit(_PGC_page_RMA, &page->count_info);
+        }
+    }
 }
 
 ulong pfn2mfn(struct domain *d, ulong pfn, int *type)